
package redeS.mensagem;

/**
 * Mensagem Push.
 * A mensagem Gnutella Push serve para que o firewall permita a transferência do recurso.
 * @author thiago-pc
 */
public class Push extends GnutellaMessage {
	
	private int indexOfNode;
	// filename não é relevante
	
	/**
	 * Além dos dados do cabeçalho (veja abaixo no construtor da superclasse), contem mais
	 * um parâmetro.
	 * @param indexOfNode Índice do nó na rede. Representa o IP e a porta de conexão.
	 * @see GnutellaMessage#GnutellaMessage(long, int)
	 */
	public Push(long descriptorID, int TTL, int indexOfNode) {
		super(descriptorID, TTL);
		this.indexOfNode = indexOfNode;
	}

	/**
	 * Índice do nó que tem o recurso mas está atrás de um firewall.</br>
	 * (é necessário pois ele tem que saber que esse Push é para ele! isso simula
	 * a permissão que a mensagem causa no firewall)
	 */
	public int getIndexOfNode() {
		return indexOfNode;
	}
	
	public boolean equals(Object obj) {
		if( super.equals(obj) ){
			if(obj instanceof Push){
				return indexOfNode == ((Push)obj).indexOfNode;
			}
		}
		return false;
	}
}
